home *** CD-ROM | disk | FTP | other *** search
- /* ARC - Archive utility - ARCDEL
-
- $define(tag,$$segment(@1,$$index(@1,=)+1))#
- $define(version,Version $tag(
- TED_VERSION DB =2.07), created on $tag(
- TED_DATE DB =11/08/85) at $tag(
- TED_TIME DB =23:30:53))#
- $undefine(tag)#
- $version
-
- (C) COPYRIGHT 1985 by System Enhancement Associates; ALL RIGHTS RESERVED
-
- By: Thom Henderson
-
- Description:
- This file contains the routines used to delete entries
- in an archive.
-
- Language:
- Computer Innovations Optimizing C86
- */
- #include <stdio.h>
- #include "arc.h"
-
- delarc(num,arg) /* remove files from archive */
- int num; /* number of arguments */
- char *arg[]; /* pointers to arguments */
- {
- struct heads hdr; /* header data */
- int del; /* true to delete a file */
- int did[$maxarg]; /* true when argument used */
- int n; /* index */
-
- if(!num) /* she must specify which */
- abort("You must tell me which files to delete!");
-
- for(n=0; n<num; n++) /* for each argument */
- did[n] = 0; /* reset usage flag */
-
- openarc(1); /* open archive for changes */
-
- while(readhdr(&hdr,arc)) /* while more entries in archive */
- { del = 0; /* reset delete flag */
- for(n=0; n<num; n++) /* for each template given */
- { if(match(hdr.name,arg[n]))
- { del = 1; /* turn on delete flag */
- did[n] = 1; /* turn on usage flag */
- break; /* stop looking */
- }
- }
-
- if(del) /* skip over unwanted files */
- { fseek(arc,hdr.size,1);
- if(note)
- printf("Deleting file: %s\n",hdr.name);
- }
- else /* else copy over file data */
- { writehdr(&hdr,new); /* write out header and file */
- filecopy(arc,new,hdr.size);
- }
- }
-
- hdrver = 0; /* special end of archive type */
- writehdr(&hdr,new); /* write out archive end marker */
- closearc(1); /* close archive after changes */
-
- if(note)
- for(n=0; n<num; n++) /* report unused arguments */
- if(!did[n])
- printf("File not found: %s\n",arg[n]);
- }
-